package com.shujia

import scala.io.{BufferedSource, Source}

object Demo20WordCountScala {
  def main(args: Array[String]): Unit = {
    //1.读文件
    val bs: BufferedSource = Source.fromFile("scala/data/words.txt")

    // 2、将每一行数据转成List中的每一个元素
    val lines: List[String] = bs.getLines().toList

    // 3、将每一行数据中的单词切分出来
    val words: List[String] = lines.flatMap(_.split(","))

    // 4、按照每个单词分组
    /**
      * groupBy 指定分组的列
      * 最终会返回 k-v 格式的数据
      * k ： 指定的分组的列
      * v ： 符合分组条件的所有的元素共同组成的一个List
      * 实际上groupBy默认会返回一个Map
      */
    val groupby: Map[String, List[String]] = words.groupBy(word => word)

    val wordcount: Map[String, Int] = groupby.map(kv => {
      val key: String = kv._1
      val value: List[String] = kv._2
      val cnt: Int = value.size
      (key, cnt)
    })

    wordcount.foreach(println)

    bs.close()

  }
}
